[ACM] Some more fixes
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 30 Jul 2007 15:03:16 +0000 (16:03 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 30 Jul 2007 15:03:16 +0000 (16:03 +0100)
 - don't reload the policy if it has been loaded
 - don't always load the policy in the test suite when the policy is
   already loaded
 - skip tests 07 and 09 when ACM is not enabled and xm is not using the
   Xen-API
 - fix a problem when trying to remove an invalid label

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
tools/python/xen/util/acmpolicy.py
tools/xm-test/lib/XmTestLib/acm.py
tools/xm-test/tests/security-acm/07_security-acm_pol_update.py
tools/xm-test/tests/security-acm/09_security-acm_pol_update.py

index bc2569e657919be231ea1f8f69a2c56eda8a2409..277e6b49faac0b5abd65b54c0a68ae5f9fefc935 100644 (file)
@@ -818,12 +818,13 @@ class ACMPolicy(XSPolicy):
             if successful,the policy's flags will indicate that the
             policy is the one loaded into the hypervisor
         """
-        (ret, output) = commands.getstatusoutput(
+        if not self.isloaded():
+            (ret, output) = commands.getstatusoutput(
                                    security.xensec_tool +
                                    " loadpolicy " +
                                    self.get_filename(".bin"))
-        if ret != 0:
-            return -xsconstants.XSERR_POLICY_LOAD_FAILED
+            if ret != 0:
+                return -xsconstants.XSERR_POLICY_LOAD_FAILED
         return xsconstants.XSERR_SUCCESS
 
     def isloaded(self):
index dc9ab1611a59de16a95eaf23cabf1974ec66d6d4..021aec048f1c07d0fe9f375d0c2b7771b869a16a 100644 (file)
@@ -67,6 +67,10 @@ def ACMLoadPolicy(policy='xm-test'):
     if main.serverType == main.SERVER_XEN_API:
         ACMLoadPolicy_XenAPI()
     else:
+        cmd='xm dumppolicy | grep -E "^POLICY REFERENCE = ' + policy + '.$"'
+        s, o = traceCommand(cmd)
+        if o != "":
+            return
         s, o = traceCommand("xm makepolicy %s" % (policy))
         if s != 0:
             FAIL("Need to be able to do 'xm makepolicy %s' but could not" %
index 8365842930d9ecb4a0664e186eb918f960dda819..d4d5eafdf77b666089f2f7ac5e5a09a351678117 100644 (file)
@@ -12,11 +12,20 @@ from xen.xend import XendAPIConstants
 from xen.util import acmpolicy, security, xsconstants
 from xen.util.acmpolicy import ACMPolicy
 from xen.xend.XendDomain import DOM0_UUID
+from XmTestLib.acm import *
 
 import commands
 import os
 import base64
 
+if not isACMEnabled():
+    SKIP("Not running this test since ACM not enabled.")
+
+try:
+    session = xapi.connect()
+except:
+    SKIP("Skipping this test since xm is not using the Xen-API.")
+
 xm_test = {}
 xm_test['policyname'] = "xm-test"
 xm_test['date'] = "Fri Sep 29 14:44:38 2006"
index f1a6757fafd1d958ef90b44565d7bf646509e13c..fc3dab766435859485937a5bdaa7ef8cc29fdb3e 100644 (file)
@@ -7,6 +7,7 @@
 
 from XmTestLib import xapi
 from XmTestLib.XenAPIDomain import XmTestAPIDomain
+from XmTestLib.acm import *
 from XmTestLib import *
 from xen.xend import XendAPIConstants
 from xen.util import security, xsconstants
@@ -16,6 +17,14 @@ import base64
 import struct
 import time
 
+if not isACMEnabled():
+    SKIP("Not running this test since ACM not enabled.")
+
+try:
+    session = xapi.connect()
+except:
+    SKIP("Skipping this test since xm is not using the Xen-API.")
+
 def typestoxml(types):
     res = ""
     for t in types: